#!/usr/bin/python
# -*- coding: UTF-8 -*-

from kpautos.engine.case import Case
from kptest.config.enum import DeviceType, HostType, DeviceUtility


class Component_FAN_079(Case):
    """
        Name:
            Component_FAN_079
        Label:
            CLI设置风扇转速测试
        PreCondition:
            1、BMC正常运行
            2、OS正常运行
        TestStep:
            1、CLI设置风扇ID为1的风扇转速level为12，有结果A）
            2、CLI查询风扇ID为1的风扇转速level信息，有结果B）
        ExpectedResult:
            A）设置风扇转速成功；
            B）查询风扇转速为12；
        Parameters:

        Remark:

    """

    # 测试执行前配置等准备操作
    def pre_test_case(self):
        self.device_dut = self.resource.get_device(device_type=DeviceType.Server, utility=DeviceUtility.DUT)
        self.os_host = self.device_dut.get_host(host_type=HostType.HostOS)
        self.cli_api = self.device_dut.get_api(ns_name="BmcCli")

    # 测试步骤
    def procedure(self):
        self.log_step(" 1、CLI设置风扇ID为1的风扇转速level为12，有结果A）")
        # 查询原始工作模式
        self.origin_state = self.cli_api.cli_query_fan_state()
        # 设置工作模式为手动
        self.cli_api.cli_set_fan_mode(mode='1', timeout=0)
        # 设置风扇转速
        res = self.cli_api.cli_set_fan_speed(fanlevel='12', fanid=1)
        self.assertEqual("success", res.get("result"), "设置风扇转速失败")
        self.logger.info("A）设置风扇转速成功；")

        self.log_step(" 2、CLI查询风扇ID为1的风扇转速level信息，有结果B）")
        res = self.cli_api.cli_query_fan_state()
        self.assertEqual("12", res.get("fan_level"), "风扇转速不符合预期")
        self.logger.info("B）查询风扇转速为12；")

    # 测试结束后恢复环境
    def post_test_case(self):
        mode = self.origin_state.get('mode')
        if mode == 'auto':
            self.cli_api.cli_set_fan_mode(mode='0')
        else:
            fan_level = self.origin_state.get('fan_level')
            self.cli_api.cli_set_fan_speed(fanlevel=fan_level, fanid=1)
